package com.teamwings.modules.code.entity;

import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.teamwings.modules.head.entity.FormTableHead;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>
 *   表单内容表（表单头和表单内容的关系是一对多）
 * </p>
 *
 * @author admin
 * @since 2021-05-06
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("FORM_TABLE_CODE")
public class FormTableCode implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @TableId(value = "ID")
    private String id;

    /**
     * 关联表头（form_table_head）数据
     */
    @TableField("TABLE_HEAD_ID")
    private String tableHeadId;

    /**
     * 暂未启用
     * 数据源的形式， 指 tableSource=2时，需要指定什么形式的数据源
     * 0 自己管理
     * 1 online表单
     * 2 外部链接
     */
    @TableField("TABLE_SOURCE_TYPE")
    private String tableSourceType;

    /**
     * 数据源的种类
     * 自动 type = 0, 无数据源 type = 1  外部数据来源 type = 2
     */
    @TableField("TABLE_SOURCE")
    private String tableSource;

    /**
     * 表单具体内容（存储为一个json字符串）
     */
    @TableField("TABLE_CODE")
    private String tableCode;

    /**
     * 表单的字段 （这里的字段都是有能被表单服务识别的字段组成【标识@FormControl注解，同时不是布局控件】）
     */
    @TableField("TABLE_FIELDS")
    private String tableFields;

    /**
     * 当前表单内容的版本
     */
    @TableField("TABLE_VERSION")
    private Integer tableVersion;

//    @TableField("\"create_by\"")
//    private String createBy;
//
//    @TableField("\"create_time\"")
//    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
//    @ApiModelProperty(example = "2020-12-12 12:00:00")
//    private Date createTime;

    @TableField(value = "UPDATE_BY", fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    @TableField(value = "UPDATE_TIME", fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 备注
     */
    @TableField("REMARKS")
    private String remarks;

    /**
     * 装载对应的head数据（form_table_head）
     */
    @TableField(exist = false,value = "HEAD")
    private FormTableHead head;


}
